//
//  AppDelegate.swift
//  MicroBlog
//
//  Created by 002 on 15/10/14.
//  Copyright © 2015年 002. All rights reserved.
//

import UIKit
import Alamofire

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // Override point for customization after application launch.
        QorumLogs.enabled = true
        QorumLogs.test()
        // 初始化主窗口
        let window : UIWindow = UIWindow.init(frame: UIScreen.mainScreen().bounds)
        self.window = window
//        self.window?.makeKeyAndVisible()
        QLShortLine()
        QL2Info("text")
        // 设置 AFN - 当AFN通过网络发送请求的时候，状态栏显示菊花
//        AFNetworkActivityIndicatorManager.sharedManager().enabled = true
        
        // 创建并设置根控制器
//        let rootVC = MainViewController()
//        let rootVC = NewFeatureViewController()
//        let rootVC = WelcomeViewController()
        self.window?.rootViewController = defaultRootViewController

        self.window?.makeKeyAndVisible()
        
        // 设置全局外观
        self.setupAppearance()
        SQLiteManager.sharedManager
        // 测试解档用户账号信息
        print("\(UserAccountViewModel.shareUserAccount)")
        
        // 监听通知
        NSNotificationCenter.defaultCenter().addObserverForName(WBSwitchRootViewControllerNotification,
            object: nil,
            queue: nil)
            { [weak self] (notification) -> Void in
            
                // 调试信息打印
                print("\(notification)")
                
                let vc = notification.object != nil ? WelcomeViewController() : MainViewController()
                
                self?.window?.rootViewController = vc
        }
        
        return true
    }
    
    // 应用程序进入到后台
    func applicationDidEnterBackground(application: UIApplication) {
        // 清除数据库缓存
        StatusDAL.clearDataCache()
    }
     
    // 相当于dellalloc
    deinit {
        
        // 销毁通知
        NSNotificationCenter.defaultCenter().removeObserver(self,   // 监听者
            name: WBSwitchRootViewControllerNotification,           // 监听的通知名称
            object: nil)                                            // 发送通知的对象
    }
    /// 设置全局外观（全局外观一般都再程序入口处进行设置）
    func setupAppearance() {
    
        UITabBar.appearance().tintColor = AppearanceTintColor
        UINavigationBar.appearance().tintColor = AppearanceTintColor
    }
    
    
    // MARK: 启动的根控制器
    private var defaultRootViewController : UIViewController {
        
        // 1.判断是否登录
        if UserAccountViewModel.shareUserAccount.isUserLogin {
            return isNewVersion ? NewFeatureViewController() : WelcomeViewController()
        }
        
        // 2.没有登录返回主控制器（访客视图界面）
        return MainViewController()
    }
    
    /// 判断是否新版本
    private var isNewVersion: Bool {
        
        // 1. 当前的版本 - info.plist
        let currentVersion = NSBundle.mainBundle().infoDictionary!["CFBundleShortVersionString"] as! String
        let version = Double(currentVersion)!
        print("当前版本 \(version)")
        
        // 2. `之前`的版本，把当前版本保存在用户偏好 - 如果 key 不存在，返回 0
        let sandboxVersionKey = "sandboxVersionKey"
        let sandboxVersion = NSUserDefaults.standardUserDefaults().doubleForKey(sandboxVersionKey)
        print("之前版本 \(sandboxVersion)")
        
        // 3. 保存当前版本
        NSUserDefaults.standardUserDefaults().setDouble(version, forKey: sandboxVersionKey)
        
        return version > sandboxVersion
    }

}

